var app = getApp();

Page({
  data: {
    /*patient_id要从上一页获取 */
    patient_id: 0,
    //基础信息
    basalInfo: {
      bw: 92, //体重
      ageIndex: 0, //年龄段
      diaTypeIndex: 0, //糖尿病类型
      ifCureIndex: 0, //是否接受过治疗
      cureTDI: 23, //已接受治疗的患者的每日胰岛素总量（U）
      bgConIndex: 0, //血糖控制情况
      idealBG: [79.2, 124.2, 120.6, 144.0], //目标血糖控制水平【餐前低值、餐前高值、餐后低值、餐后高值】
    },
    ageGroup: ['青春期前期', '青春期至成年人', '成年人'],
    diaTypeArray: ['1型糖尿病', '2型糖尿病', '妊娠性糖尿病', '其他'],
    ifCureArray: ['否', '是'],
    BGConArray: ['血糖控制良好', '经常发生低血糖', '高血糖、极少或无低血糖'],
    //胰岛素泵6个时间段设置
    pumpTimeSlice: ['00:00-03:00', '03:00-08:00', '08:00-12:00', '12:00-16:00', '16:00-20:00', '20:00-24:00'],
    //每日就餐&就寝安排（24小时制）
    dailyLife: {
      breakfast: 8, //早餐时间
      lunch: 12, //午餐时间
      dinner: 18, //晚餐时间
    },
    dailyTime: ['0', '1', 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24], //24小时
    showOld: false,
    //历史胰岛素方案
    oldInsulinPlan: {
      oldTDI: 20, //全天胰岛素总剂量
      oldBasalTDI: 18, //全天基础胰岛素总量
      oldBolusTDI: 2, //全天餐时胰岛素总量
      oldBasalInject: 1.2, //基础注射率（24小时平均）
      oldPumpSlice: [0.5, 1.2, 0.8, 0.9, 1.1, 0.8], //六个基础时间段胰岛素注射率
      oldBolusSlice: [9, 9, 9], //三个餐时胰岛素剂量
    },
    //历史针剂方案
    oldInjectPlan: {
      morningBolus: 10, //早餐前（速效）
      afternoonBolus: 10, //午餐前（速效）
      eveningBolus: 10, //晚餐前（速效）
      bedtimeBasal: 8, //睡前（长效）
    },
    ifShow: false,
    showSave: false, //是否显示保存胰岛素方案的按钮
  },

  adjustTDI(e){
    const {
      mode
    } = e.currentTarget.dataset;
    const {
      value
    } = e.detail;
    this.setData({
      [mode]: value // 将用户输入的内容保存到 data 中
    });
    console.log('mode',mode)
    console.log('value',value)
    this.convert(this.data.oldInsulinPlan.oldBasalTDI,this.data.oldInsulinPlan.oldBolusTDI)
  },

  onLoad(options) {
    console.log("你好，初始胰岛素剂量")
    console.log(options)
    if (options.patient_id) {
      this.setData({
        patient_id: parseInt(options.patient_id)
      })
    }

    if (options.basalInfo) {
      this.setData({
        basalInfo: JSON.parse(decodeURIComponent(options.basalInfo))
      })
      // console.log(this.data.basalInfo)
    }


    //从后端获取病人基础信息
    // wx.request({
    //   url: `${app.globalData.protocol}://${app.globalData.host}/bgmp/api/doctor?Action=GetPatientDetail`,
    //   method: 'POST',
    //   header: {
    //     "Content-Type": "application/json",
    //     "x-api-key": wx.getStorageSync('token'),
    //   },
    //   data:{
    //     "patient_id":this.data.patient_id
    //   },
    //   success: (res) => {
    //     // console.log("返回患者信息：", res)
    //     var patient = res.data.message
    //     console.log("返回患者信息：", patient)

    //     this.setData({
    //       ['basalInfo.bw']:patient.weight
    //     })

    //     var age = patient.age;
    //     if(age>=10 && age<=14){
    //       this.setData({
    //         ['basalInfo.ageIndex']:0
    //       })
    //     }else if(age>14 && age<=18){
    //       this.setData({
    //         ['basalInfo.ageIndex']:1
    //       })
    //     }else if(age>18){
    //       this.setData({
    //         ['basalInfo.ageIndex']:2
    //       })
    //     }

    //     var diaType = patient.type_of_diabetes
    //     if(diaType == "T1DM"){
    //       this.setData({
    //         ['basalInfo.diaTypeIndex']:0
    //       })
    //     }else if(diaType == "T2DM"){
    //       this.setData({
    //         ['basalInfo.diaTypeIndex']:1
    //       })
    //     }
    //   }
    // })

    this.setData({
      ifShow: this.data.basalInfo.ifCureIndex > 0 ? true : false,
    })

    this.oldCurePlanDecide();
  },

  // 更新体重
  updateBW(e) {
    const {
      value
    } = e.detail;
    var baseInfo = this.data.basalInfo
    baseInfo.bw = value;
    this.setData({
      basalInfo: baseInfo // 将用户输入的内容保存到 data 中
    });
  },

  selectYes() {
    var baseInfo = this.data.basalInfo
    baseInfo.ifCureIndex = 1
    this.setData({
      basalInfo: baseInfo
    });
    console.log("baseInfo", baseInfo)
  },

  selectNo() {
    var baseInfo = this.data.basalInfo
    baseInfo.ifCureIndex = 0
    this.setData({
      basalInfo: baseInfo
    });
    console.log("baseInfo", baseInfo)
  },

  //初始&旧的胰岛素剂量计算及泵转针剂换算
  oldCurePlanDecide: function () {
    var diaType = parseInt(this.data.basalInfo.diaTypeIndex) + 1;
    var ifCure = parseInt(this.data.basalInfo.ifCureIndex);
    console.log('调整后体重',this.data.basalInfo.bw)

    this.setData({
      showOld: true
    })

    this.setData({
      showSave: true
    })

    if (diaType == 1) {
      // var BWD = 0.5 * this.data.basalInfo.bw; //体重剂量
      // if (ifCure) {
      //   console.log("接收过治疗")
      //   var bgControl = this.data.basalInfo.bgConIndex;
  
      //   if (bgControl == 0)
      //     var ID = this.data.basalInfo.cureTDI * 0.8;
      //   else if (bgControl == 1)
      //     var ID = this.data.basalInfo.cureTDI * 0.7;
      //   else if (bgControl == 2)
      //     var ID = this.data.basalInfo.cureTDI * 1;
  
      //   console.log("此前注射治疗总量", ID)
      //   var TDI = (BWD + ID) / 2;
      // } else{
      //   var TDI = BWD;
      // }
  
      // console.log("糖尿病类型：", diaType)
      // console.log("每日注射总量：", TDI)
  
      // console.log("修改后年龄段：", this.data.basalInfo.ageIndex)
  
      // var ageRange = this.data.basalInfo.ageIndex
      // if (ageRange == 0) {
      //   var basal = TDI * 0.4;
      //   var bolus = TDI * 0.6;
      // } else if (ageRange == 1) {
      //   var basal = TDI * 0.4;
      //   var bolus = TDI * 0.6;
      // } else if (ageRange == 2) {
      //   var basal = TDI * 0.5;
      //   var bolus = TDI * 0.5;
      // }
      const basal = 0.2 * this.data.basalInfo.bw
      const bolus = 0.2 * this.data.basalInfo.bw
      console.log("每日基础总量，餐时总剂量：", basal, bolus)
      this.convert(basal,bolus)
    } 
    else if (diaType == 2) {
      const requestData = {
        "time" : Math.floor(new Date().getTime() / 1000),
        "patient_id": this.data.patient_id
      }
      console.log("Action=Csii requestData",requestData)
      wx.request({
        url: `${app.globalData.protocol}://${app.globalData.host}/bgmp/api/algorithm?Action=Csii`,
        method: 'POST',
        header: {
          "Content-Type": "application/json",
          "x-api-key": wx.getStorageSync('token'),
        },
        data:requestData,
        success: (res) => {
          console.log("获取basal及bolus", res)
          if (res.data.code == 200) {
            const basal = res.data.message.basal
            const bolus = res.data.message.bolus
            console.log("每日基础总量，餐时总剂量：", basal, bolus)
            this.convert(basal,bolus)
          } else {
            console.log("获取basal及bolus失败")
          }
        },
        fail:(res)=>{
          console.log("获取basal及bolus失败")
        }
      })
    }
  },

  convert(basal, bolus){
    console.log("每日基础总量，餐时总剂量：", basal, bolus)

    const basalrate = basal / 24.0
    const TDI = basal + bolus

    this.setData({
      oldInsulinPlan: {
        oldTDI: TDI, //全天胰岛素总剂量
        oldBasalTDI: basal, //全天基础胰岛素总量
        oldBolusTDI: bolus, //全天餐时胰岛素总量
        oldBasalInject: basalrate, //基础注射率（24小时平均）
        oldPumpSlice: [0.6 * basalrate, 1.2 * basalrate, 1.0 * basalrate, basalrate + 0.1, 1.1 * basalrate, 0.8 * basalrate], //六个基础时间段胰岛素注射率
        oldBolusSlice: [(bolus * 0.4).toFixed(1), (bolus * 0.3).toFixed(1), (bolus * 0.3).toFixed(1)], //三个餐时胰岛素剂量
      }
    })

    this.setData({
      oldInjectPlan: {
        morningBolus: (bolus * 0.4).toFixed(1), //早餐前（速效）
        afternoonBolus: (bolus * 0.3).toFixed(1), //午餐前（速效）
        eveningBolus: (bolus * 0.3).toFixed(1), //晚餐前（速效）
        bedtimeBasal: ((0.6 * 3 + 1.2 * 5 + 1.0 * 4 + 1.1 * 4 + 0.8 * 4) * basalrate + (0.1 + basalrate) * 4).toFixed(1), //睡前（长效）
      }
    })
  },

  //保存胰岛素方案
  saveTherapy: function () {
    var requestData = {
      "patient_id": parseInt(this.data.patient_id),
      "save_time": Math.floor(Date.now() / 1000),
      "tdi": parseFloat(this.data.oldInsulinPlan.oldTDI),
      "basal_tdi": parseFloat(this.data.oldInsulinPlan.oldBasalTDI),
      "bolus_tdi": parseFloat(this.data.oldInsulinPlan.oldBolusTDI),
      "basal_inject": parseFloat(this.data.oldInsulinPlan.oldBasalInject),
      "pump_0_3": parseFloat(this.data.oldInsulinPlan.oldPumpSlice[0]),
      "pump_3_8": parseFloat(this.data.oldInsulinPlan.oldPumpSlice[1]),
      "pump_8_12": parseFloat(this.data.oldInsulinPlan.oldPumpSlice[2]),
      "pump_12_16": parseFloat(this.data.oldInsulinPlan.oldPumpSlice[3]),
      "pump_16_20": parseFloat(this.data.oldInsulinPlan.oldPumpSlice[4]),
      "pump_20_24": parseFloat(this.data.oldInsulinPlan.oldPumpSlice[5]),
      "breakfast_bolus": parseFloat(this.data.oldInsulinPlan.oldBolusSlice[0]),
      "lunch_bolus": parseFloat(this.data.oldInsulinPlan.oldBolusSlice[1]),
      "dinner_bolus": parseFloat(this.data.oldInsulinPlan.oldBolusSlice[2]),
      "bedtime_basal": parseFloat(this.data.oldInjectPlan.bedtimeBasal)
    };

    console.log("requestData", requestData);

    wx.request({
      url: `${app.globalData.protocol}://${app.globalData.host}/bgmp/api/insulin?Action=AddInsulinTherapy`,
      method: 'POST',
      header: {
        "Content-Type": "application/json",
        "x-api-key": wx.getStorageSync('token'),
      },
      data: requestData,
      success: (res) => {
        console.log("保存结果：", res)
        if (res.data.code == 200) {
          this.setData({
            showSave: false,
          })
          wx.showToast({
            title: '保存成功',
            icon: 'success',
            duration: 2000 //持续的时间
          })
          setTimeout(function () {
            wx.navigateBack();
          }, 2000); // 延时 2000 毫秒（2 秒）

        } else {
          wx.showToast({
            title: '请稍后重试',
            icon: 'none',
            duration: 2000 //持续的时间
          })
        }
      }
    })
  },

  //数字输入框（体重）
  bwBindInput: function (e) {
    console.log('input发送选择改变，携带值为', e.detail.value)
    this.setData({
      ['basalInfo.bw']: e.detail.value
    })
  },

  //普通选择器（年龄段）
  ageGroupBindPickerChange: function (e) {
    console.log('picker发送选择改变，携带值为', e.detail.value)
    this.setData({
      ['basalInfo.ageIndex']: e.detail.value
    })
  },

  //普通选择器（糖尿病类型）
  diaTypeBindPickerChange: function (e) {
    console.log('picker发送选择改变，携带值为', e.detail.value)
    this.setData({
      ['basalInfo.diaTypeIndex']: e.detail.value
    })
  },

  //数字输入框（目标血糖）
  idealBGBindInput0: function (e) {
    console.log('picker发送选择改变，携带值为', e.detail.value)
    this.setData({
      ['basalInfo.idealBG[0]']: e.detail.value
    })
  },
  idealBGBindInput1: function (e) {
    console.log('picker发送选择改变，携带值为', e.detail.value)
    this.setData({
      ['basalInfo.idealBG[1]']: e.detail.value
    })
  },
  idealBGBindInput2: function (e) {
    console.log('picker发送选择改变，携带值为', e.detail.value)
    this.setData({
      ['basalInfo.idealBG[2]']: e.detail.value
    })
  },
  idealBGBindInput3: function (e) {
    console.log('picker发送选择改变，携带值为', e.detail.value)
    this.setData({
      ['basalInfo.idealBG[3]']: e.detail.value
    })
  },

  //普通选择器（是否接受过治疗）
  ifCureBindPickerChange: function (e) {
    console.log('picker发送选择改变，携带值为', e.detail.value)
    this.setData({
        ['basalInfo.ifCureIndex']: e.detail.value
      }),
      this.setData({
        ifShow: this.data.basalInfo.ifCureIndex > 0 ? true : false,
      })
  },

  //数字输入（已接收治疗的每日胰岛素剂量）
  cureTDIBindInput: function (e) {
    console.log('input发送选择改变，携带值为', e.detail.value)
    this.setData({
      ['basalInfo.cureTDI']: e.detail.value
    })
  },

  //普通选择器（血糖控制情况）
  bgConBindPickerChange: function (e) {
    console.log('picker发送选择改变，携带值为', e.detail.value)
    this.setData({
      ['basalInfo.bgConIndex']: e.detail.value
    })
  },

  //早餐时间
  breakfastbindDateChange: function (e) {
    console.log('picker发送选择改变，携带值为', e.detail.value)
    this.setData({
      ['dailyLife.breakfast']: e.detail.value
    })
  },

  //午餐时间
  lunchbindDateChange: function (e) {
    console.log('picker发送选择改变，携带值为', e.detail.value)
    this.setData({
      ['dailyLife.lunch']: e.detail.value
    })
  },

  //早餐时间
  dinnerbindDateChange: function (e) {
    console.log('picker发送选择改变，携带值为', e.detail.value)
    this.setData({
      ['dailyLife.dinner']: e.detail.value
    })
  },
})